﻿using System.Windows.Forms;

using Elifart.Library;
using System.Diagnostics;

namespace Elifart.Editor
{
    public partial class ElifartEditorMainWindow : Form
    {
        #region Constructor

        public ElifartEditorMainWindow()
        {
            InitializeComponent();
            this.LoadAssociationFile();
            this.LoadAthletesFile();
        }

        #endregion

        #region Overriden Methods

        protected override void Dispose(bool disposing)
        {
            AssociationManager.GetManager().SaveAssociations();
            AthleteManager.GetManager().SaveAthletes();
            
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }

        #endregion

        #region Private Methods

        private void LoadAssociationFile()
        {
            if (!AssociationManager.GetManager().LoadAssociations())
            {
                bool initError = true;

                if (MessageBox.Show(this.ParentForm,
                                "Não foi possível carregar o arquivo com as Associações.\r\n Deseja carregar as Associações do arquivo de Backup?",
                                "Elifart - Erro...",
                                MessageBoxButtons.YesNo,
                                MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    if (!AssociationManager.GetManager().LoadAssociationBackup())
                        MessageBox.Show(this.ParentForm,
                                        "Não foi possível carregar o arquivo de Backup das Associações.)",
                                        "Elifart - Erro...",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    else
                        initError = false;
                }

                if ((initError) && (MessageBox.Show(this.ParentForm,
                                                    "Todas as associações serão perdidas. \r\n Deseja continuar?",
                                                    "Elifart - Aviso...",
                                                    MessageBoxButtons.YesNo,
                                                    MessageBoxIcon.Warning) == DialogResult.No))
                    Process.GetCurrentProcess().Kill();
            }

            if (!AssociationManager.GetManager().CreateAssociationsBackup())
                MessageBox.Show(this.ParentForm,
                                "Não foi possível criar o arquivo de Backup das Associações.)",
                                "Elifart - Erro...",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
        }

        private void LoadAthletesFile()
        {
            if (!AthleteManager.GetManager().LoadAthletes())
            {
                bool initError = true;

                if (MessageBox.Show(this.ParentForm,
                                "Não foi possível carregar o arquivo com os Jogadores.\r\n Deseja carregar os Jogadores do arquivo de Backup?",
                                "Elifart - Erro...",
                                MessageBoxButtons.YesNo,
                                MessageBoxIcon.Warning) == DialogResult.Yes)
                {
                    if (!AthleteManager.GetManager().LoadAthletesBackup())
                        MessageBox.Show(this.ParentForm,
                                        "Não foi possível carregar o arquivo de Backup dos Jogadores.)",
                                        "Elifart - Erro...",
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Error);
                    else
                        initError = false;
                }

                if ((initError) && (MessageBox.Show(this.ParentForm,
                                                    "Todos os Jogadores serão perdidos. \r\n Deseja continuar?",
                                                    "Elifart - Aviso...",
                                                    MessageBoxButtons.YesNo,
                                                    MessageBoxIcon.Warning) == DialogResult.No))
                    Process.GetCurrentProcess().Kill();
            }

            if (!AthleteManager.GetManager().CreateAthletesBackup())
                MessageBox.Show(this.ParentForm,
                                "Não foi possível criar o arquivo de Backup dos Jogadores.)",
                                "Elifart - Erro...",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
        }

        #endregion
    }
}
